/*
 * Alto2DEngine.h
 *
 *  Created on: 2009/02/05
 *      Author: Yongshik Cho
 */

#ifndef ALTO2DENGINE_H_
#define ALTO2DENGINE_H_

#include "RenderWindow.h"
#include "RenderSystem.h"
#include "AudioSystem.h"
#include "ResourceManager.h"
#include "LoggerableManager.h"


class Alto2DEngine
{
public:
	static const String _DEFAULT_SCRIPT_FILE;
	static const String _DEFAULT_SCRIPT_FUNCTION;

public:
	Alto2DEngine(HINSTANCE hInstance,
			HINSTANCE hPrevInstance,
			LPTSTR lpCmdLine,
			int32 nCmdShow, HWND hwnd = 0);

	virtual ~Alto2DEngine();

public:
	void run();

	inline const DeviceSettings& getSettings() const { return *mSettings; }
	inline void setSettings(const DeviceSettings& sets) { *mSettings = sets; }

private:

private:
	LoggerableManager*		mLoggerableManager;
	RenderWindow* 			mRenderWindow;
	RenderSystem* 			mRenderSystem;
	AudioSystem* 			mAudioSystem;
	ResourceManager* 		mResourceManager;

	DeviceSettings*			mSettings;
};

#endif /* ALTO2DENGINE_H_ */
